home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
nrpas13.arc
/
SHELL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-05-01
|
724b
|
32 lines
PROCEDURE shell(n: integer; VAR arr: glnarray);
(* Programs using routine SHELL must define the type
TYPE
glnarray = ARRAY [1..np] OF real;
in the main routine, with np >= n. *)
LABEL 3;
CONST
aln2i=1.442695022;
tiny=1.0e-5;
VAR
nn,m,lognb2,l,k,j,i: integer;
t: real;
BEGIN
lognb2 := trunc(ln(n)*aln2i+tiny);
m := n;
FOR nn := 1 TO lognb2 DO BEGIN
m := m DIV 2;
k := n-m;
FOR j := 1 TO k DO BEGIN
i := j;
3: l := i+m;
IF (arr[l] < arr[i]) THEN BEGIN
t := arr[i];
arr[i] := arr[l];
arr[l] := t;
i := i-m;
IF (i >= 1) THEN GOTO 3
END
END
END
END;